package demo.service;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import demo.Result;
import demo.entity.User;
import demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 用户 Service
 *
 * @author 王宇亮
 * @version 1.7
 */
@Service
public class UserService {
    @Autowired
    UserRepository userRepository;

    /**
     * 添加用户
     *
     * @param user 用户对象
     * @return 结果对象，包含用户对象
     */
    public Result add(User user) {
        userRepository.save(user);
        return Result.success("用户添加成功", user);
    }

    /**
     * 判断身份证号是否已经存在
     *
     * @param cardId 身份证号
     * @return 布尔值
     */
    public Boolean isCardIdExisted(String cardId) {
        User user1 = userRepository.findUserByCardId(cardId);
        return !(user1 == null);
    }

    /**
     * 按员工姓名搜索员工（全匹配）
     *
     * @param name 员工姓名
     * @return 姓名为 name 的所有员工
     */
    public List<User> findUsersByUserName(String name) {
        return userRepository.findUsersByUserName(name);
    }

    /**
     * 按员工 id 修改员工姓名、性别、手机号和电邮
     *
     * @param user 员工对象
     */
    public Result modifyUser(User user) {
        // StrUtil.isBlank() is a convenient method to check whether the string is a blank string,
        // which will check if there are all blank characters such as blanks and enters in the string.

        userRepository.save(user);
        return Result.success("用户信息修改成功");
    }

    /**
     * 列出所有用户
     *
     * @return 用户对象的数组
     */
    public List<User> listUsers() {
        return userRepository.findByUidNotNull();
    }

    /**
     * 按 uid 查找用户
     *
     * @param uid 用户 id
     * @return 用户对象
     */
    public User findUserByUid(Long uid) {
        return userRepository.findUserByUid(uid);
    }
}
